package main

import (
	"fmt"
	"reflect"
)

type Stack struct {
	T
	size int
	capacity int
	values interface{}
}

func (stack *Stack) Push(v interface{}) {
	if stack.size > stack.capacity {

	} else {

	}
}

func (stack *Stack) Pop() interface{} {
	return 0
}

func StackNew(T reflect.Type) Stack {
	return Stack{}
}

func main() {
	type Item int
	var item Item = 1

	stack := StackNew(reflect.TypeOf(item))
	fmt.Println(stack)
}